package com.luxx.util;

import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;


/**
 * @author luxx
 */
public class BeanUtil {
    /**
     *  web应用 IOC容器
     */
    private static WebApplicationContext wac;

    static {
        /** 初始化容器 */
        wac = ContextLoader.getCurrentWebApplicationContext();
    }

    /**
     *   根据名称和类型查找实例化类
     * @param beanName  实例化类别称
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(String beanName, Class<T> clazz) {
        if (wac == null) {
            new Exception("该类需Spring加载结束再初始化").printStackTrace();
            return null;
        } else {
            try {
                return wac.getBean(beanName, clazz);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }

    /**
     *  根据类型查找实例化类
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        if (wac == null) {
            new Exception("该类需Spring加载结束再初始化").printStackTrace();
            return null;
        } else {
            try {
                return wac.getBean(clazz);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
}